package bank;

import java.util.logging.Logger;

import mware_access.NameService;
import bank_access.KontoException;
import bank_access.KontoImplBase;
import bank_to_bank.NoSuchAccountException;
import bank_to_bank.TransferHandlerImplBase;

public class TransferHandler extends TransferHandlerImplBase {

    private NameService nameservice;
    private Logger logger;

    public TransferHandler(NameService nameservice) {
        this.nameservice = nameservice;
        logger = Bank.getLogger();
    }

    @Override
    public boolean gutschreiben(String KontoID, double betrag)
            throws NoSuchAccountException {

        try {
            KontoImplBase empfaenger = (KontoImplBase) nameservice.lookup(KontoID);
            if (empfaenger != null) {
                double alterStand = empfaenger.kontoStand();
                double erwarteterNeuerStand = alterStand + betrag;
                double tatsaechlicherStand = empfaenger.einzahlen(betrag);
                // TODO Syso auskommentieren
//                System.out.println(alterStand);
//                System.out.println(erwarteterNeuerStand);
//                System.out.println(tatsaechlicherStand);
//                System.out.println(erwarteterNeuerStand == tatsaechlicherStand);
//                System.out.println(erwarteterNeuerStand - tatsaechlicherStand == 0);
                if (erwarteterNeuerStand != tatsaechlicherStand) {
                    return false;
                }
            } else {
            	logger.info("lookup von "+KontoID+" liefert null");
            }
        } catch (KontoException e) {
            e.printStackTrace();
        }
        return false;
    }
}
